#include "Distrito.h"
#include "Utils.h"
#include <sstream>
using namespace Entidades;

Distrito::Distrito() {
}

string Distrito::getNombre() const {
	return nombre;
}

/* Piso el atributo nombre. Como es un campo de tamaño fijo (50 caracteres), los caracteres q no utilizo se llenan
 * con blanco */
void Distrito::setNombre(string nombre) {

	this->nombre = nombre;
}

void Distrito::hidratarse(char* buffer, unsigned int tamanioDelBuffer) {

	//escribo el buffer en el stringStream
	stringstream* ss = new stringstream(stringstream::in | stringstream::out | stringstream::binary);
	ss->seekg(0, ios::beg);
	ss->write(buffer, tamanioDelBuffer);

	//nombre
	this->nombre = Utils::ObtenerSiguienteStringVariable(ss);

	delete ss;
}

char* Distrito::construirBuffer() {

	//agrupo los atributos
	stringstream* ss = new stringstream(stringstream::in | stringstream::out | stringstream::binary);
	ss->seekp(0, ios::end);

	//tamanio del nombre
	unsigned int tamanioDelNombre = this->nombre.size();
	ss->write((char*)&tamanioDelNombre, sizeof(int));

	//nombre
	ss->write(this->nombre.c_str(), tamanioDelNombre);

	//construyo el buffer
	unsigned int tamanioDelBuffer = this->getTamanioDelBuffer();
	char* buffer = new char[tamanioDelBuffer];
	ss->read(buffer, tamanioDelBuffer);
	delete ss;

	//lo devuelvo
	return buffer;
}

unsigned int Distrito::getTamanioDelBuffer() {
	return this->nombre.size() + sizeof(int);
}

void Distrito::marcarComoBorrado() {
	this->nombre = "";
}

Distrito::~Distrito() {
}
